﻿using System;
using System.Collections;
using System.Collections.Generic;

namespace Priority_Queue
{
	// Token: 0x0200032B RID: 811
	public interface IPriorityQueue<TItem, in TPriority> : IEnumerable<TItem>, IEnumerable where TPriority : IComparable<TPriority>
	{
		// Token: 0x060014EA RID: 5354
		void Enqueue(TItem node, TPriority priority);

		// Token: 0x060014EB RID: 5355
		TItem Dequeue();

		// Token: 0x060014EC RID: 5356
		void Clear();

		// Token: 0x060014ED RID: 5357
		bool Contains(TItem node);

		// Token: 0x060014EE RID: 5358
		void Remove(TItem node);

		// Token: 0x060014EF RID: 5359
		void UpdatePriority(TItem node, TPriority priority);

		// Token: 0x17000351 RID: 849
		// (get) Token: 0x060014F0 RID: 5360
		TItem First { get; }

		// Token: 0x17000352 RID: 850
		// (get) Token: 0x060014F1 RID: 5361
		int Count { get; }
	}
}
